漏洞挖掘常用的方法有哪些
SQL注入
对于注入漏洞,通常我们在 URL后加单引号即可判断是否有注入漏洞。如
http://www.isafe.cc/list.asp?id=1
后加单引号,即http://www.isafe.cc/list.asp?id=1’
,这时服务器会把1’代入数据库查询,然后页面报错,而对于不同的数据库错误信息也不一样。对于不报错的页面,可以使用and 1=1和and 1=2,并根据页面返回内容判断是否有注入。如果and 1=1和and 1=2返回的页面内容不同,则可以断定存在注入。比如,第一次提交的URL
http://www.isafe.cc/list.asp?id=1 and 1=1
页面有返回内容,而第二次提交的URLhttp://www.isafe.cc/list.asp?id=1 and 1=2
页面没有完整的内容,则可以断定存在SQL注入。对于有些特定的Web页面后端查询,比如Update、Delete、Insert等,可以使用Sleep等函数(数据库不同则函数不同)进行 SQL注入,比如提交 URL
http://www.isafe.cc/list.asp?id=1 and sleep(5)
,如果页面等待几秒钟才返回,则可以断定存在SQL注入。SQL注入一般有基于报错的注入、基于布尔值的注入和基于时间的注入。
XSS(跨站漏洞)
跨站漏洞一般出现在 Web浏览器端,分为反射型、存储型等,跨站可用来盗取其他用户的Cookie,虽然没有SQL注入危害大,但也被业界评为高危漏洞,一般在URL后加入
<script>alert(“www.isafe.cc”)
;</script>,如果页面有弹框,则表示存在跨站漏洞。文件上传
文件上传漏洞一般视情况而定,有些是中间件的漏洞如 apache、nginx、iis等。对于apache上传1.php.bak这样的文件是可以作为PHP文件执行的(某些版本),对于nginx上传1.jpg文件,访问
http://www.isafe.cc/upload/1.jpg/1.php
就可以执行PHP代码。对于iis 6.0上传1.asp、1.jpg这样的文件可以被作为ASP来执行,建立1.asp文件夹,在1.asp文件下的任意后缀文件都可以作为ASP来执行。有些是代码过滤不严谨造成的任意文件上传,有些代码对文件上传根本不过滤,对应过滤的文件也可以通过各种方法绕过上传。文件上传视情况而定,有各种各样可利用的方法。文件下载
下载系统上的任意文件,如数据库配置文件、密码文件Shadow等,Web层面会提供下载附件或软件的功能,一般形式如
http://www.isafe.cc/download.php?filename= /files/document.doc
,Web后端会根据filename参数在指定的目录中读取文件的内容返回给浏览器,如果修改filename为http://www.isafe.cc/download.php?filename= ../../../.. /../../../etc/passwd
这样的形式,则可以跨越指定的目录访问系统的任意文件。代码执行
远程代码执行多见于PHP、Java等脚本语言中,PHP中的Eval、System、Assert、Popen等函数如果对外界传入的参数直接使用,则会造成远程代码执行,我们在找漏洞的时候只要定位到相关函数,观察相关函数的参数来源即可。
CSRF(跨站点请求伪造)
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。